package view;

import controller.Controleur;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;
import javax.swing.*;
import model.User;

/**
 * Classe representant la fenetre d'ajout de contact
 * @author Lefevre, Thoue
 */
public class ContactFrame extends JDialog {

    private PanelPrincipal panelPrincipal;
    private JTextField fieldNom;
    private JTextField fieldPrenom;
    private JTextField fieldPort;
    private JTextField fieldIp;
    private JButton save;
    private Controleur controleur;
    /**
     * Constructeur
     * @param controleur controleur de l'application
     */
    public ContactFrame(Controleur controleur) {
        this.controleur = controleur;
        initComposants();
    }
    /**
     * Methode d'initialisation des composants graphiques
     */
    private void initComposants() {
        setVisible(false);
        setPreferredSize(new Dimension(260, 240));
        setTitle("Contact");
        setLayout(new BorderLayout());
        setResizable(false);
        setLocationRelativeTo(null);
        pack();

        panelPrincipal = new PanelPrincipal();
        fieldNom = new JTextField(20);
        fieldPrenom = new JTextField(20);
        fieldPort = new JTextField(6);
        fieldIp = new JTextField(6);
        save = new JButton("Enregistrer");
        save.addActionListener(new SaveContactListener());

        add(panelPrincipal, BorderLayout.CENTER);
        panelPrincipal.add(new JLabel("Nom"));
        panelPrincipal.add(fieldNom);
        panelPrincipal.add(new JLabel("Prenom"));
        panelPrincipal.add(fieldPrenom);
        panelPrincipal.add(new JLabel("Adresse IP"));
        panelPrincipal.add(fieldIp);
        panelPrincipal.add(new JLabel("Port"));
        panelPrincipal.add(fieldPort);

        add(save, BorderLayout.SOUTH);
        validate();
    }
    /**
     * Classe representant le listener du bouton sauvegarder les contacts
     */
    class SaveContactListener implements ActionListener {
        /**
         * Constructeur par defaut
         */
        public SaveContactListener() {
        }
        /**
         * Evenement de clique sur le bouton sauvegarder
         * @param e evenement du bouton
         */
        @Override
        public void actionPerformed(ActionEvent e) {

            if (Pattern.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}", fieldIp.getText())
                    && Pattern.matches("^\\d*$", fieldPort.getText())) {
                controleur.ajouterContact(new User(fieldNom.getText(), fieldPrenom.getText(), fieldIp.getText(), Integer.valueOf(fieldPort.getText())));
                controleur.saveContact();
            } else {
                JOptionPane.showMessageDialog(panelPrincipal, "Veuillez rentrer une adresse ip et un port d'ecoute correct.");
            }
        }
    }
}
